Virtual machines are software-based instances of computing devices that run on computing servers. A computing server may run numerous virtual machines, depending upon the hardware capacity of the server. The server may run a hypervisor, which manages the virtual machines on the server and acts as an interface between the virtual machines and the server's hardware.
In some deployments, virtual machine servers connect to external storage arrays to access virtual machine disks and/or other virtual machine data. For example, a virtual machine server may connect to a storage array, e.g., over a SAN (Storage Area Network), LAN (Local Area Network), and/or other network or connection. The storage array efficiently stores the data of the virtual machines, including their boot drives, data drives, and so forth, while the virtual machine server provides memory and processing resources to run the virtual machines. To access virtual machine data from an array, the virtual machines running on the server issue IO (Input/Output) requests to the array. The IO requests specify reads and writes of data on the array for the respective virtual machines. The array processes the IO requests to effect the specified reads and writes, with reads causing the array to return the requested data to the requesting virtual machines. For optimal performance, the virtual machine server and the array may be located in close proximity to each other, e.g., in a single data center.
Virtual machine servers commonly support migration of virtual machine data. For example, a new storage array may become available that provides faster performance than an array currently being used. An administrator may implement migration by operating a management console, specifying source and target arrays, and directing a virtual machine server to migrate the virtual machine's data from source to target. Migration may proceed non-disruptively, i.e., without requiring service interruption, using techniques known in the art as “live migration.”